﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Utilities.QuickSql;
using MySql.Data;
using System.Threading;

namespace Deviseur_Cs2i_Car
{
    public partial class AddTypeMoteur : Form
    {
        private TYPEMOTEUR TypeMoteur;

        public AddTypeMoteur()
        {
            InitializeComponent();

            this.Text = "Ajouter un type moteur de voiture";
            this.buttonSubmitTypeMoteur.Text = "Ajouter";

            DataTable DataTypeVoiture = new DataTable();

            DataTypeVoiture.Columns.Add("NumHTDI");
            DataTypeVoiture.Columns.Add("LibelleHTDI");
            DataTypeVoiture.Rows.Add("0", "- Choisir un type d'injection -");

            Table HTDI = Program.Db.QueryTable("SELECT * FROM HTDI");
            foreach (Record r in HTDI)
                DataTypeVoiture.Rows.Add(r.Values[0], r.Values[1]);

            this.comboHTDI.DataSource = DataTypeVoiture;
            this.comboHTDI.ValueMember = "NumHTDI";
            this.comboHTDI.DisplayMember = "LibelleHTDI";

            this.comboHTDI.SelectedIndex = 0;
        }
        public AddTypeMoteur(int NumTypeMoteur)
        {
            InitializeComponent();
            
            this.Text = "Modifier un type moteur de voiture";
            this.buttonSubmitTypeMoteur.Text = "Modifier";

            DataTable DataTypeVoiture = new DataTable();

            DataTypeVoiture.Columns.Add("NumHTDI");
            DataTypeVoiture.Columns.Add("LibelleHTDI");
            DataTypeVoiture.Rows.Add("0", "- Choisir un type d'injection -");

            Table HTDI = Program.Db.QueryTable("SELECT * FROM HTDI");
            foreach (Record r in HTDI)
                DataTypeVoiture.Rows.Add(r.Values[0], r.Values[1]);

            this.comboHTDI.DataSource = DataTypeVoiture;
            this.comboHTDI.ValueMember = "NumHTDI";
            this.comboHTDI.DisplayMember = "LibelleHTDI";

            this.comboHTDI.SelectedIndex = 0;

            Table TypeVoiture2 = Program.Db.QueryTable("SELECT * FROM TYPEMOTEUR WHERE NumTypeMoteur = " + NumTypeMoteur);
            foreach (Record r in TypeVoiture2)
            {
                this.textLibelleTypeMoteur.Text = r.Values[1].ToString();
                this.comboHTDI.SelectedValue = r.Values[2].ToString();
                TypeMoteur = new TYPEMOTEUR(NumTypeMoteur, this.textLibelleTypeMoteur.Text.ToString(), Convert.ToInt32(this.comboHTDI.SelectedValue.ToString()));
            }
        }


        private void buttonSubmitTypeMoteur_Click(object sender, EventArgs e)
        {
            if (textLibelleTypeMoteur.Text.ToString() != "")
            {
                if (this.buttonSubmitTypeMoteur.Text == "Ajouter")
                {
                    TypeMoteur = new TYPEMOTEUR(textLibelleTypeMoteur.Text.ToString(), Convert.ToInt32(this.comboHTDI.SelectedValue.ToString()));

                    Thread addThread = new Thread(new ThreadStart(addTypeMoteur_Thread));
                    addThread.Start();
                }
                else if (this.buttonSubmitTypeMoteur.Text == "Modifier")
                {
                    TypeMoteur.set_LibelleTypeMoteur(this.textLibelleTypeMoteur.Text.ToString());
                    TypeMoteur.set_HTDI(new HTDI(Convert.ToInt32(this.comboHTDI.SelectedValue.ToString())));
                    Thread updateThread = new Thread(new ThreadStart(updateTypeMoteur_Thread));
                    updateThread.Start();
                }
            }
            else
            {
                MessageBox.Show("Veuillez remplir tous les champs", "Erreur de saisie");
            }
            
        }
        private void addTypeMoteur_Thread()
        {
            Invoke(new MethodInvoker(Disabled));
            TypeMoteur.new_TypeMoteur();
            Invoke(new MethodInvoker(CloseFen));
        }

        private void updateTypeMoteur_Thread()
        {
            Invoke(new MethodInvoker(Disabled));
            TypeMoteur.modify_TypeMoteur();
            Invoke(new MethodInvoker(CloseFen));
        }

        private void Disabled()
        {
            this.textLibelleTypeMoteur.Enabled = false;
            this.buttonSubmitTypeMoteur.Enabled = false;
        }
        
        private void CloseFen()
        {
            this.Close();
        }

        

    }
}
